package A01File;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class FileTest {
    public static void main(String[] args) {
        //进入该文件夹
        File file = new File("D:\\File");
        //对该文件夹进行遍历计数
        Map<String, Integer> map = getCount(file);
        //打印遍历完的map集合
        System.out.println(map);
    }
    public static Map<String,Integer> getCount(File file){
        //建立一个map集合，进行计数
        Map<String,Integer> map = new HashMap<>();
        //获取该文件中的所有文件
        File[] files = file.listFiles();
        for (File file1 : files) {
            if(file1.isFile()){
                //如果当前是文件时，直接进行操作
                String name = file1.getName();
                String[] arr = name.split("\\.");
                if (arr.length >= 2){
                    String s = arr[arr.length - 1];
                    if(map.containsKey(s)){
                        //如果集合已有，count进行自增一次，并且将新的count放入map与原先的键对应
                        int count = map.get(s);
                        count++;
                        map.put(s,count);
                    }else {
                        //如果没有，设置该键的值为1；
                        map.put(s,1);
                    }
                }
            }else {
                //如果当前文件是文件夹，进行遍历操作，再对遍历完的map集合计数
                Map<String, Integer> sonMap = getCount(file1);
                Set<Map.Entry<String, Integer>> set = sonMap.entrySet();
                for (Map.Entry<String, Integer> entry : set) {
                    String key = entry.getKey();
                    int value = entry.getValue();
                    if(map.containsKey(key)){
                        //如果map集合中已经有该键，加入sonmap中的数量
                        int count = map.get(key);
                        count += value;
                        map.put(key,count);
                    }else {
                        //如果没有，将该键值对放入map集合中
                        map.put(key,value);
                    }
                }
            }
        }
        return map;
    }
}
